package com.tbit.uqbike.webmanager.business.maintain_performance.object;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.tbit.uqbike.webmanager.business.maintain_performance.constant.PerformanceBizType;
import com.tbit.uqbike.webmanager.business.maintain_performance.constant.PerformanceRuleType;
import lombok.Data;
import lombok.experimental.FieldNameConstants;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 运维绩效规则组
 * performance_rule_group
 */
@Data
@FieldNameConstants
@TableName(value = "performance_rule_group", autoResultMap = true)
public class PerformanceRuleGroup {
    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Long ruleGroupId;

    /**
     * 所属区域id
     */
    private Integer accountId;

    /**
     * 业务类型 0-换电常规 1-换电站点 2-挪车 3-调度 4-维修
     */
    private PerformanceBizType bizType;

    /**
     * 规则类型 0-基础 1-时效 2-时段 3-换电前电量 4-换电后电量 5-站点优先级 6-站外 7-超区 8-异常 9-距离 10-闲置时长 11-时效和时段
     */
    private PerformanceRuleType ruleType;

    /**
     * 元信息（如：记录奖励上限）
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> metaInfo;

    /**
     * 是否启用
     */
    private Boolean enabled;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 组内规则列表
     */
    @TableField(exist = false)
    private List<PerformanceRule> rules = new ArrayList<>();
}